Mapping হলো Elasticsearch-এ ডকুমেন্টের প্রতিটি ফিল্ডের ডেটা টাইপ এবং গঠন নির্ধারণ করার একটি প্রক্রিয়া। এটি Elasticsearch-কে সঠিকভাবে ডেটা ইন্ডেক্স এবং সার্চ করতে সহায়তা করে। Mapping মূলত একটি স্কিমা (schema) হিসেবে কাজ করে, যা নির্ধারণ করে ডকুমেন্টের বিভিন্ন ফিল্ড কী ধরনের ডেটা ধারণ করবে, যেমন টেক্সট, সংখ্যা, তারিখ, বা ভৌগোলিক পয়েন্ট। Mapping ছাড়া Elasticsearch ডেটাকে ঠিকভাবে ইন্ডেক্স বা রিট্রিভ করতে পারবে না।
Mapping-এর ভূমিকা
Mapping Elasticsearch-এ ডেটা ইন্ডেক্সিং এবং সার্চ অপারেশন কার্যকরী করতে সহায়ক। এর কিছু প্রধান ভূমিকা নিচে উল্লেখ করা হলো:
১. ডকুমেন্টের স্ট্রাকচার নির্ধারণ করা
- Mapping নির্ধারণ করে ডকুমেন্টের প্রতিটি ফিল্ডের ডেটা টাইপ (যেমন text, keyword, integer, date) এবং গঠন।
- এটি Elasticsearch-কে ডেটা সঠিকভাবে সংরক্ষণ এবং রিট্রিভ করতে সহায়ক করে।
উদাহরণ:
{
"properties": {
"name": { "type": "text" },
"age": { "type": "integer" },
"join_date": { "type": "date", "format": "yyyy-MM-dd" },
"is_active": { "type": "boolean" }
}
}
- এখানে
"name"
ফিল্ড text
, "age"
ফিল্ড integer
, "join_date"
ফিল্ড date
, এবং "is_active"
ফিল্ড boolean
টাইপ হিসেবে নির্ধারিত হয়েছে।
২. ডেটা টাইপের ভিত্তিতে সার্চ অপারেশন পরিচালনা করা
- Mapping Elasticsearch-কে সঠিক সার্চ অপারেশন পরিচালনা করতে সাহায্য করে।
- উদাহরণস্বরূপ,
text
টাইপের ফিল্ডে ফ্রি-টেক্সট সার্চ করা হয়, যেখানে keyword
টাইপের ফিল্ডে এক্সাক্ট ম্যাচ সার্চ করা হয়।
উদাহরণ:
- text: টোকেনাইজ করা হয় এবং এনালাইসিস করা হয়, যেমন টেক্সট সার্চের জন্য।
- keyword: এক্সাক্ট ম্যাচ সার্চ, যেমন নির্দিষ্ট টার্ম বা কিওয়ার্ড ফিল্টার করতে।
৩. ফিল্ড এনালাইসিস কনফিগার করা
- Mapping-এর মাধ্যমে আপনি নির্দিষ্ট ফিল্ডের জন্য কাস্টম অ্যানালাইজার নির্ধারণ করতে পারেন। এটি টেক্সট এনালাইসিসের জন্য অত্যন্ত গুরুত্বপূর্ণ।
- বিভিন্ন অ্যানালাইজার (যেমন স্ট্যান্ডার্ড, ইংলিশ, লোয়ারকেস) ব্যবহার করে টেক্সট ডেটা কিভাবে টোকেনাইজ এবং ইন্ডেক্স হবে তা নির্ধারণ করা যায়।
উদাহরণ:
{
"properties": {
"content": {
"type": "text",
"analyzer": "english"
}
}
}
- এখানে
"content"
ফিল্ডে "english"
অ্যানালাইজার ব্যবহার করা হয়েছে, যা ইংরেজি ভাষার টেক্সট এনালাইসিসের জন্য উপযোগী।
৪. ইন্ডেক্স এবং সার্চ পারফরম্যান্স উন্নত করা
- Mapping Elasticsearch-কে ইন্ডেক্স করার সময় ফিল্ড এবং ডেটার ধরন সঠিকভাবে সংজ্ঞায়িত করতে সাহায্য করে, যা সার্চ অপারেশনকে দ্রুত করে তোলে।
- উদাহরণস্বরূপ, সংখ্যামূলক (numeric) বা তারিখের ফিল্ডে রেঞ্জ সার্চ দ্রুততর হয় যখন Mapping সঠিকভাবে কনফিগার করা থাকে।
৫. ফিল্ড কাস্টমাইজেশন এবং কন্ট্রোল
- Mapping-এর মাধ্যমে আপনি ফিল্ড কাস্টমাইজ করতে পারেন, যেমন:
- ফিল্ড ইন্ডেক্স করা হবে কিনা (index: true/false)।
- ফিল্ডের জন্য নরমালাইজার বা অ্যানালাইজার ব্যবহার করা হবে কিনা।
- ডেটার ফরম্যাট কী হবে (যেমন তারিখ ফিল্ডে
yyyy-MM-dd
ফরম্যাট)।
৬. কমপ্লেক্স ডেটা স্ট্রাকচার সংজ্ঞায়িত করা (Nested এবং Geo Data)
- Mapping এর মাধ্যমে Nested ডকুমেন্ট বা ভৌগোলিক (geo_point, geo_shape) ডেটার জন্য কনফিগারেশন নির্ধারণ করা যায়। এটি ডেটার স্ট্রাকচার এবং সার্চ অপারেশন আরও কার্যকর করে তোলে।
উদাহরণ:
{
"properties": {
"location": {
"type": "geo_point"
}
}
}
- এখানে
"location"
ফিল্ডটি একটি ভৌগোলিক পয়েন্ট (latitude এবং longitude) ধারণ করবে।
Mapping-এর প্রকারভেদ
Dynamic Mapping:
- ডিফল্টভাবে Elasticsearch Dynamic Mapping ব্যবহার করে, যেখানে নতুন ডকুমেন্ট এলে Elasticsearch স্বয়ংক্রিয়ভাবে নতুন ফিল্ড এবং ডেটা টাইপ নির্ধারণ করে।
- এটি নতুন ডেটা দ্রুত ইন্ডেক্স করার জন্য উপযোগী, তবে এটি সবসময় নির্ভুল নাও হতে পারে।
Explicit (Static) Mapping:
- স্ট্যাটিক Mapping-এ, ডেভেলপার বা ব্যবহারকারী আগে থেকেই ডকুমেন্টের প্রতিটি ফিল্ড এবং তার ডেটা টাইপ নির্ধারণ করে।
- এটি ডেটা ইন্ডেক্সিং এবং সার্চের নির্ভুলতা বাড়ায় এবং পারফরম্যান্স উন্নত করে।
- এখানে প্রতিটি ফিল্ডের ডেটা টাইপ নির্দিষ্ট করা হয়েছে, যা ইন্ডেক্সিং এবং সার্চ অপারেশনে কার্যকরভাবে সাহায্য করবে।
Mapping-এর সেরা চর্চা (Best Practices)
সঠিক ফিল্ড টাইপ নির্ধারণ করা:
- প্রতিটি ফিল্ডের জন্য সঠিক ডেটা টাইপ নির্বাচন করা উচিত, যেমন
integer
বা float
সংখ্যা সংরক্ষণের জন্য এবং keyword
ব্যবহার করা উচিত এক্সাক্ট ম্যাচের জন্য।
প্রয়োজন অনুযায়ী অ্যানালাইজার ব্যবহার করা:
- টেক্সট ফিল্ডে কাস্টম অ্যানালাইজার ব্যবহার করে কন্টেন্ট টোকেনাইজ এবং সার্চ অপারেশনকে আরও কার্যকর করা যায়।
Dynamic Mapping সীমিত রাখা:
- যেসব ক্ষেত্রে প্রয়োজন নেই সেগুলোতে Dynamic Mapping বন্ধ রাখা উচিত এবং স্ট্যাটিক Mapping ব্যবহার করা উচিত। এটি পারফরম্যান্স এবং নির্ভুলতা বাড়াতে সহায়ক।
ফিল্ড ইন্ডেক্সিং এবং স্টোরেজ পরিচালনা:
- শুধু প্রয়োজনীয় ফিল্ডগুলো ইন্ডেক্স করা উচিত এবং যেসব ফিল্ডে সার্চ বা ফিল্টারিং প্রয়োজন নেই সেগুলোর ইন্ডেক্সিং বন্ধ রাখা উচিত।
উপসংহার
Mapping হলো Elasticsearch-এ ডেটা ইন্ডেক্সিং এবং সার্চের জন্য একটি গুরুত্বপূর্ণ উপাদান, যা ডকুমেন্টের ফিল্ড এবং তাদের ডেটা টাইপ নির্ধারণ করে। এটি Elasticsearch-কে ডেটা সঠিকভাবে সংরক্ষণ এবং রিট্রিভ করতে সহায়ক করে। Mapping সঠিকভাবে নির্ধারণ করা হলে সার্চ অপারেশন দ্রুত এবং কার্যকরী হয় এবং বড় আকারের ডেটাবেস পরিচালনা সহজ হয়।